<!DOCTYPE HTML>
<html>
<head>
<title>MouseMove | AutoHotkey</title>
<meta name="description" content="The MouseMove command moves the mouse cursor." />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>MouseMove</h1>

<p>移动鼠标光标.</p>

<pre class="Syntax"><span class="func">MouseMove</span>, X, Y <span class="optional">, Speed, Relative</span></pre>
<h2>参数</h2>
<dl>

  <dt>X, Y</dt>
  <dd><p>鼠标移动的目标位置的 x/y 坐标, 可以为<a href="../Variables.htm#Expressions">表达式</a>. 坐标相对于活动窗口, 除非曾使用 <a href="CoordMode.htm">CoordMode</a> 改变了这个设置.</p></dd>

  <dt>Speed</dt>
  <dd><p>移动鼠标的速度, 介于 0(最快) 和 100(最慢) 之间, 可以为<a href="../Variables.htm#Expressions">表达式</a>.</p>
    <p class="note"><strong>注意</strong>: 速度为 0 表示瞬时移动鼠标到目标位置.
    <p>如果省略, 则使用默认速度(通过 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a> 设置, 若未设置则使用 2).</p>
      <p>在 <a href="SendMode.htm">SendInput/Play 模式</a>中会忽略 <em>Speed</em>; 它们会瞬时移动鼠标到目标位置(不过 <a href="SetMouseDelay.htm">SetMouseDelay</a> 有适用于 SendPlay 的模式). 要显示鼠标移动轨迹(例如使用脚本向观众进行演示时), 请使用 <code><a href="Send.htm#Click">SendEvent {Click 100, 200}</a></code> 或 <code><a href="SendMode.htm">SendMode</a> Event</code>(可以和 <a href="BlockInput.htm">BlockInput</a> 联合使用).</p></dd>

  <dt>Relative</dt>
  <dd>
    <p>如果省略, 则会把 X 和 Y 坐标视为绝对值. 要更改此行为, 请指定下面的字母:</p>
    <p><strong>R:</strong> 将 X 和 Y 坐标视为距离当前鼠标位置的偏移. 换句话说, 会把光标从当前位置往右移动 X 像素(负值则往左) 且往下移动 Y 像素(负值则往上).</p>
  </dd>

</dl>

<h2>备注</h2>
<p>此命令的发送模式由 <a href="SendMode.htm">SendMode</a> 设置.</p>
<p><a href="SendMode.htm">SendPlay 模式</a>生成的鼠标事件可以比其他模式适应更大范围的游戏. 此外, 某些应用程序和游戏在鼠标移动过快时可能会跟踪困难. 可以使用 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a> 的 <em>speed</em> 参数来降低鼠标的速度(仅对默认的 <a href="SendMode.htm">SendEvent 模式</a>有效).</p>
<p>可以使用 <a href="BlockInput.htm">BlockInput</a> 命令防止用户对鼠标的任何物理操作扰乱由鼠标命令生成的模拟鼠标事件. 不过, 在 <a href="SendMode.htm">SendInput/Play</a> 模式中通常不需要这个命令, 因为它们会自动延迟用户对鼠标的物理操作到发送之后.</p>
<p>在每次鼠标移动后会有一个自动的延时(不包括 <a href="SendMode.htm">SendInput 模式</a>). 使用 <a href="SetMouseDelay.htm">SetMouseDelay</a> 可以改变延时的长度.</p>
<p>下面是另一种移动鼠标的方法, 它在某些多显示器环境中可能工作得更好:</p>
<pre><a href="DllCall.htm">DllCall</a>("SetCursorPos", int, 100, int, 400)  <em>; 第一个数字是 X 坐标而第二个是 Y (相对于屏幕).</em></pre>
<p>相关提示, 鼠标光标可以通过<a href="DllCall.htm#HideCursor">隐藏光标示例</a>临时隐藏起来.</p>
<h2>相关</h2>
<p><a href="CoordMode.htm">CoordMode</a>, <a href="SendMode.htm">SendMode</a>, <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a>, <a href="SetMouseDelay.htm">SetMouseDelay</a>, <a href="Click.htm">Click</a>, <a href="MouseClick.htm">MouseClick</a>, <a href="MouseClickDrag.htm">MouseClickDrag</a>, <a href="MouseGetPos.htm">MouseGetPos</a>, <a href="BlockInput.htm">BlockInput</a></p>
<h2>示例</h2>
<pre class="NoIndent"><em>; 移动鼠标到新位置:</em>
MouseMove, 200, 100

<em>; 缓慢移动鼠标 (速度 50 比较起默认的 2 显然要缓慢) 到
; 距离当前位置右边 20 个像素且在下面 30 个像素的位置:</em>
MouseMove, 20, 30, 50, R</pre>

</body>
</html>